﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Librerias;
using System.IO;

namespace eCampusWeb
{
    public partial class Materiales : System.Web.UI.Page
    {
        ENMaterial mat;

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LabelAviso.Text = "";
                LabelAviso.Visible = false;
                btAñadirMaterial.Visible = false;

                ///Veo a ver quien accede a la página
                int quienEs;
                try
                {
                    quienEs = Convert.ToInt32(Session["tipo"]);
                    ///Cargo los datos en consecuencia
                    cargaDatos(quienEs);
                }
                catch (NullReferenceException)
                {
                    LabelAviso.Visible = true;
                    LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales";
                }
                catch (Exception)
                {
                    LabelAviso.Visible = true;
                    LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales";
                }
            }

            // mat = new ENMaterial();
            //  Load_Data();
        }
        #endregion

        #region cargaDatos
        /// <summary>
        /// cargo los materiales según quién esté visitando la página
        /// </summary>
        /// <param name="visitante">Tipo de visitante</param>
        private void cargaDatos(int visitante)
        {
                try
                {
                    string quienEs;
                    quienEs = Session["correo"].ToString();
                    if ((visitante ==1) || (visitante==2))
                           mat = new ENMaterial();
                     
                     ///miro que he de cargar
                    switch (visitante)
                    {
                    ///INVITADO -> no puede ver materiales
                    case -1:
                        btAñadirMaterial.Visible = false;
                        LabelAviso.Visible = true;
                        LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales"; 
                        break;

                    ///CARGO MATERIALES DEL PROFESOR
                    case 1:
                        gvMateriales.DataSource = null;
                        btAñadirMaterial.Visible = true;
                        gvMateriales.DataSource = mat.GetMaterialesWebSegunAsignaturasProfesor(quienEs);
                        gvMateriales.DataBind();
                        break;

                    ///CARGO MATERIALES DEL ALUMNO
                    case 2:
                        ///Me cargará materiales
                        btAñadirMaterial.Visible = true;
                        gvMateriales.DataSource = mat.GetMaterialesWebSegunAsignaturasAlumno(quienEs);
                        gvMateriales.DataBind();
                        break;

                    ///OTRO -> no puede ver materiales
                    default:
                         btAñadirMaterial.Visible = false;
                        LabelAviso.Visible = true;
                        LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales";
                        break;
                   }
                }
                catch (NullReferenceException)
                {
                    LabelAviso.Visible = true;
                    LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales";
                }
                catch (Exception)
                {
                    LabelAviso.Visible = true;
                    LabelAviso.Text = "¡Oppss! Debe registrarse para acceder a Materiales";
                }
            
        }
        #endregion

        #region Load_Data()
        private void Load_Data()
        {
        }
        #endregion

        #region gvMateriales_RowDeleting
        protected void gvMateriales_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {

                Load_Data();
            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion

        #region Ir a Añadir Material
        protected void btAñadirMaterial_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/MaterialCrear.aspx");
        }
        #endregion

        #region gvMateriales_PageIndexChanging
        protected void gvMateriales_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
          
            try
            {
                this.gvMateriales.PageIndex = e.NewPageIndex;
                int quienEs = Convert.ToInt32(Session["tipo"]);
              
                cargaDatos(quienEs);
               // this.gvMateriales.DataSource = Session["View"].ToString();
               // this.gvMateriales.DataBind();
               



                            }
            catch
            {
            }
        }
        #endregion

        #region Descarga Materiales
        public static string ServerMapPath(string path)
        {
            return HttpContext.Current.Server.MapPath(path);
        }

        public static HttpResponse GetHttpResponse()
        {
            return HttpContext.Current.Response;
        }

        public static void DownLoadFileFromServer(string fileName)
        {
            try
            {
                //Cogemos la ruta de nuestro Proyecto
                string filePath = ServerMapPath(fileName);
                //Cogemos el response actual
                HttpResponse res = GetHttpResponse();
                res.Clear();
                res.AppendHeader("content-disposition", "attachment; filename=" + filePath);
                res.ContentType = "application/octet-stream";
                res.WriteFile(filePath);
                res.Flush();
                res.End();
            }
            catch (FileNotFoundException)
            { }
            catch (Exception)
            { }
            catch
            { }

        }

        protected void descargar_Click(object sender, EventArgs e)
        {
            ImageButton a = (ImageButton)sender;
            string fileName = a.CommandArgument;

            //Descarga desde el servidor
            DownLoadFileFromServer(fileName);
        }
        #endregion
    }
}
